package com.dragon.modules.yuegou.model.member;

import com.dragon.modules.yuegou.entity.member.TemplateGradeParamEntity;
import com.dragon.modules.yuegou.enums.member.TemplateGradeParamParamType;
import com.dragon.modules.yuegou.enums.member.TemplateGradeParamTimeAccuracy;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 会员卡等级条件参数表模型类
 *
 * @author pbuilder generated
 * @date 2022-01-24 16:05:45
 * @company sgy
 * @version 2.0
 * @see Length 长度限制
 * @see NotNull 对象非空
 * @see NotEmpty 字符串、集合、表、数组非空
 */
public class TemplateGradeParam extends TemplateGradeParamEntity {

	/**
	 * 构造一个空会员卡等级条件参数表模型对象
	 */
	public TemplateGradeParam(){
		super();
	}

	/**
	 * 依据实体对象的信息构造一个会员卡等级条件参数表模型对象
	 *
	 * @param entity 实体对象
	 */
	public TemplateGradeParam(TemplateGradeParamEntity entity){
		super(entity);
	}

	/**
	 * 依据其它对象的信息构造一个会员卡等级条件参数表模型对象
	 *
	 * @param other 其它对象
	 */
	public TemplateGradeParam(TemplateGradeParam other){
		super(other);
	}


	@Override
	public String getId() {
		return id;
	}

	/**
	 * 设置主键
	 *
	 * @param id 主键
	 * @return 当前对象
	 */
	public TemplateGradeParam id(String id) {
		this.id = id;
		return this;
	}

	@Override
	public String getParamId() {
		return paramId;
	}

	/**
	 * 设置前端页面设置id
	 *
	 * @param paramId 前端页面设置id
	 * @return 当前对象
	 */
	public TemplateGradeParam paramId(String paramId) {
		this.paramId = paramId;
		return this;
	}

	@Override
	public String getBusdId() {
		return busdId;
	}

	/**
	 * 设置商圈id
	 *
	 * @param busdId 商圈id
	 * @return 当前对象
	 */
	public TemplateGradeParam busdId(String busdId) {
		this.busdId = busdId;
		return this;
	}

	@Override
	public String getTemplateSetId() {
		return templateSetId;
	}

	/**
	 * 设置会员卡模板设置id
	 *
	 * @param templateSetId 会员卡模板设置id
	 * @return 当前对象
	 */
	public TemplateGradeParam templateSetId(String templateSetId) {
		this.templateSetId = templateSetId;
		return this;
	}

	@Override
	public String getTemplateGradeId() {
		return templateGradeId;
	}

	/**
	 * 设置会员卡等级设置id
	 *
	 * @param templateGradeId 会员卡等级设置id
	 * @return 当前对象
	 */
	public TemplateGradeParam templateGradeId(String templateGradeId) {
		this.templateGradeId = templateGradeId;
		return this;
	}

	@Override
	public TemplateGradeParamParamType getParamType() {
		return paramType;
	}

    /**
	 * 设置[枚举]等级条件：1-线上消费金额-ONLINE_MONEY、2-最近消费次数-CONSUME_TIMES、3-线下积分-OFFLINE_SCORE、4-线下消费金额-OFFLINE_MONEY、5-线下最近消费次数-OFFLINE_TIMES、6-线上积分-ONLINE_SCORE
	 * 
	 * @param paramType [枚举]等级条件：1-线上消费金额-ONLINE_MONEY、2-最近消费次数-CONSUME_TIMES、3-线下积分-OFFLINE_SCORE、4-线下消费金额-OFFLINE_MONEY、5-线下最近消费次数-OFFLINE_TIMES、6-线上积分-ONLINE_SCORE
	 * @return 当前对象
	 */
	public TemplateGradeParam paramType(TemplateGradeParamParamType paramType) {
		this.paramType = paramType;
		return this;
	}

	@Override
	public BigDecimal getAmount() {
		return amount;
	}

	/**
	 * 设置累计金额/次数/积分
	 *
	 * @param amount 累计金额/次数/积分
	 * @return 当前对象
	 */
	public TemplateGradeParam amount(BigDecimal amount) {
		this.amount = amount;
		return this;
	}

	@Override
	public TemplateGradeParamTimeAccuracy getTimeAccuracy() {
		return timeAccuracy;
	}

	/**
	 * 设置[枚举]时间精度：0-累计-ALL、1-年-YEAR、2-月-MONTH、3-日-DAY
	 *
	 * @param timeAccuracy [枚举]时间精度：0-累计-ALL、1-年-YEAR、2-月-MONTH、3-日-DAY
	 * @return 当前对象
	 */
	public TemplateGradeParam timeAccuracy(TemplateGradeParamTimeAccuracy timeAccuracy) {
		this.timeAccuracy = timeAccuracy;
		return this;
	}

	@Override
	public Integer getTimeSize() {
		return timeSize;
	}

	/**
	 * 设置时间大小
	 *
	 * @param timeSize 时间大小
	 * @return 当前对象
	 */
	public TemplateGradeParam timeSize(Integer timeSize) {
		this.timeSize = timeSize;
		return this;
	}

	@Override
	public String getName() {
		return name;
	}

	/**
	 * 设置名称
	 *
	 * @param name 名称
	 * @return 当前对象
	 */
	public TemplateGradeParam name(String name) {
		this.name = name;
		return this;
	}

	@Override
	public String getCreatedBy() {
		return createdBy;
	}

	/**
	 * 设置创建人id
	 *
	 * @param createdBy 创建人id
	 * @return 当前对象
	 */
	public TemplateGradeParam createdBy(String createdBy) {
		this.createdBy = createdBy;
		return this;
	}

	@Override
	public String getCreatedName() {
		return createdName;
	}

	/**
	 * 设置创建人
	 *
	 * @param createdName 创建人
	 * @return 当前对象
	 */
	public TemplateGradeParam createdName(String createdName) {
		this.createdName = createdName;
		return this;
	}

	@Override
	public LocalDateTime getCreatedTime() {
		return createdTime;
	}

	/**
	 * 设置创建时间
	 *
	 * @param createdTime 创建时间
	 * @return 当前对象
	 */
	public TemplateGradeParam createdTime(LocalDateTime createdTime) {
		this.createdTime = createdTime;
		return this;
	}

	@Override
	public Long getModifyBy() {
		return modifyBy;
	}

	/**
	 * 设置修改人id
	 *
	 * @param modifyBy 修改人id
	 * @return 当前对象
	 */
	public TemplateGradeParam modifyBy(Long modifyBy) {
		this.modifyBy = modifyBy;
		return this;
	}

	@Override
	public String getModifyName() {
		return modifyName;
	}

	/**
	 * 设置修改人
	 *
	 * @param modifyName 修改人
	 * @return 当前对象
	 */
	public TemplateGradeParam modifyName(String modifyName) {
		this.modifyName = modifyName;
		return this;
	}

	@Override
	public LocalDateTime getModifyTime() {
		return modifyTime;
	}

	/**
	 * 设置修改时间
	 *
	 * @param modifyTime 修改时间
	 * @return 当前对象
	 */
	public TemplateGradeParam modifyTime(LocalDateTime modifyTime) {
		this.modifyTime = modifyTime;
		return this;
	}

	@Override
	public Integer getDel() {
		return del;
	}

	/**
	 * 设置是否删除：0-false-未删除、1-true-已删除
	 *
	 * @param del 是否删除：0-false-未删除、1-true-已删除
	 * @return 当前对象
	 */
	public TemplateGradeParam del(Integer del) {
		this.del = del;
		return this;
	}

	@Override
	public String getDelBy() {
		return delBy;
	}

	/**
	 * 设置删除人ID
	 *
	 * @param delBy 删除人ID
	 * @return 当前对象
	 */
	public TemplateGradeParam delBy(String delBy) {
		this.delBy = delBy;
		return this;
	}

	@Override
	public LocalDateTime getDelTime() {
		return delTime;
	}

	/**
	 * 设置删除时间
	 *
	 * @param delTime 删除时间
	 * @return 当前对象
	 */
	public TemplateGradeParam delTime(LocalDateTime delTime) {
		this.delTime = delTime;
		return this;
	}
}
